PROFDINFO.COM

Votre enseignant d'informatique en ligne

Section 2 - Configuration du réseau Linux

Retour à la page du cours

Cette section vous présentera la base du réseau Linux: comment il est configuré, comment le démarrer, l'arrêter et modifier cette configuration.

2.1 - Les fichiers de configuration du réseau

2.2 - Les services à la base du réseau

2.3 - Modifier sa configuration

2.4 - Modifier son nom de machine (nom d'hôte)

Sachez d'abord que Fedora possède un gestionnaire de réseau appelé NetworkManager qui agit sous forme de service pour gérer de façon automatique et transparente les interfaces et les connexions réseau. C'est certainement plus attirant pour le néophyte ou pour l'usager de base qui utilise son ordinateur à la maison pour aller lire son courriel, mais pour l'administrateur réseau ça l'est un peu moins. En effet, ça signifie que les fichiers de configuration auxquels ils sont habitués risquent d'être réécrit à chaque redémarrage du réseau (et donc de la machine). En plus, qui dit "automatisé et transparent" dit "perte de contrôle" et "difficulté à régler un éventuel bug", ce qui ne plaît généralement pas à un administrateur.

Le fonctionnement du NetworkManager est le suivant: un daemon appelé udev détecte l'arrivée d'un nouveau périphérique au système et il crée une règle pour ce dernier dans /etc/udev/rules.d. Dans le cas d'une carte réseau, il établit ainsi une relation entre la carte physique (par son adresse MAC) et le nom logique "eth0" (ou "eth1", "eth2", etc). udev crée également une entrée pour chaque carte réseau dans /etc/udev/rules.d/70-persistent-net.rules. Le NetworkManager utilise ces entrées pour initialiser les cartes.

NetworkManager réécrit aussi le fichier /etc/resolv.conf (voir plus bas) à chaque fois que le réseau est redémarré. Ce fichier sert à la résolution de noms et cette situation est pratique pour un portable qui change souvent de réseau. Par contre, ça ne l'est pas vraiment pour un ordinateur fixe et ça cause parfois des problèmes, particulièrement parce qu'il s'attend à recevoir les informations de DNS par DHCP.

On peut donc décider (et c'est ce qu'on fera ici) d'éteindre le NetworkManager. Pour ce faire, rien de plus simple:

chkconfig NetworkManager off
service NetworkManager stop
chkconfig network on
service network restart

Évidemment, il faut ensuite s'assurer d'avoir les bons fichiers de configuration aux bons endroits (voir ci-bas). Si ce n'est pas le cas, créez-les et redémarrez le service réseau.

Si jamais vous voulez remettre en place le NetworkManager pour une raison quelconque, vous n'avez qu'à faire les opérations inverses.

2.1 - Les fichiers de configuration du réseau

Comme pour tout service sur Linux, la configuration du réseau est faite avec des simples fichiers texte. Ces fichiers sont normalement accessibles à tout le monde en lecture mais seul root peut en modifier le contenu.

Les fichiers les plus importants sont:

  • /etc/sysconfig/network

      Configuration de base du réseau - on n'y trouve au départ pas grand chose, mais ce qui y est est fort important. L'option NETWORKING doit évidemment être à "yes" pour que quoi que ce soit puisse se passer. L'option HOSTNAME définit le nom de la machine. Ce nom est utilisé dans le cas d'un serveur avec une adresse IP statique.

Retour à la table des matières de la section

2.2 - Les services à la base du réseau

Il existe plusieurs services associés au réseau Linux. Toutefois, le service qui est à la base du tout est network. Si ce service n'est pas en fonction, rien d'autre ne peut fonctionner. Lorsque l'on modifie une configuration reliée au réseau, on devra normalement redémarrer le service network pour qu'elle soit prise en charge:

service network restart

Lorsque le service network démarre, il lira ses fichiers de configuration et utilisera les scripts appropriés pour démarrer toutes les interfaces réseau. On peut également arrêter ou démarrer une seule interface réseau avec les commandes ifup et ifdown:

ifup eth0
ifdown eth1

Le service xinetd (eXtended InetNET Daemon) est un autre service qui se trouve assez bas dans la hiérarchie (toutefois il a besoin que network soit en fonction pour démarrer). xinetd (l'amélioration du vieux inetd des anciennes distributions) est un service qui écoute sur différents ports et qui démarre le bon serveur lorsqu'une demande de connexion est reçue.

La plupart des serveurs fonctionnent maintenant de manière indépendante à xinetd, ce qui explique pourquoi il n'est même pas installé par défaut sur Fedora 9. Pour l'installer, rien de plus simple:

yum install xinetd
chkconfig xinetd on
service xinetd start

Il est souvent possible de modifier la configuration de serveurs indépendants pour les faire passer à travers xinetd. L'intérêt de cette manoeuvre est que xinetd supporte la notion de TCP Wrapper (enrobage TCP), une façon simple et efficace de sécuriser l'accès à différents serveurs sur notre machine.

Nous verrons xinetd en plus grands détails dans la prochaine section.

Retour à la table des matières de la section

2.3 - Modifier sa configuration

On peut utiliser la commande ifconfig pour voir et modifier sa configuration TCP/IP. La commande est très facile à utiliser. Utilisée seule, elle affiche la configuration de toutes les interfaces réseaux définies (incluant lo - loopback, une boucle qui pointe vers le serveur). On peut voir uniquement une interface en donnant son nom en paramètre:

ifconfig eth0

Pour modifier la configuration, on doit spécifier l'interface d'abord, l'adresse IP, puis les paramètres à modifier suivis de leurs valeurs. Par exemple:

ifconfig eth0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255

Évidemment, tout est optionnel, on ne modifie que ce que l'on veut.

Retour à la table des matières de la section

2.3.1 - Passer au mode DHCP

La commande ifconfig ne permet pas de faire passer une interface statique à un mode dynamique. Pour ce faire, il faut utiliser dhclient:

dhclient eth0

démarre le client DHCP et les interfaces actuellement en fonction passent au mode dynamique.

dhclient -r eth0

fait un release sur l'adresse reçue du serveur DHCP et termine le processus dhclient. Il faut alors le démarrer de nouveau (ce qui équivaut à un renew, puisqu'on obtiendra une nouvelle adresse IP) ou, si on veut retourner au mode statique, simplement redémarrer l'interface (on suppose qu'elle est configurée en mode statique):

ifup eth0

On peut également terminer dhclient sans "relâcher" l'adresse au serveur DHCP (ce qui ne change souvent pas grand chose) avec:

dhclient -x eth0

Retour à la table des matières de la section

2.3.2 - La persistance de la mémoire

Il ne faut pas oublier que toute modification faite avec la commande ifconfig n'est que temporaire (donc bonne jusqu'au redémarrage de la machine). Pour rendre le tout permanent, on peut ajouter la commande ifconfig à /etc/rc.d/rc.local ou (mieux) modifier le fichier de configuration de l'interface (/etc/sysconfig/networking/devices/ifcfg-eth0 par exemple). Les paramètres les plus utiles dans ce fichier sont:

# Le nom de la carte
DEVICE=eth0
# Le protocole utilisé.  Les valeurs possibles sont static, dhcp ou none
BOOTPROTO=none
# Adresse de broadcast
BROADCAST=192.168.0.255
# Adresse MAC
HWADDR=00:e0:18:7f:5b:d6
# Adresse IP
IPADDR=192.168.0.100
# Masque de sous-réseau
NETMASK=255.255.255.0
# Adresse du réseau
NETWORK=192.168.0.0
# Démarrage automatique de la carte (yes ou no)
ONBOOT=yes
# Adresse du premier serveur DNS (on peut en avoir jusqu'à 3)
DNS1=192.168.0.160
# Adresse de la passerelle
GATEWAY=192.168.0.160
TYPE=Ethernet

On peut également utiliser l'outil graphique system-config-network qui est assez intuitif et qui modifie ultimement les fichiers pour nous. Il existe en version graphique (system-config-network-gui) et texte (system-config-network-tui). Si on appelle simplement system-config-network, la version appropriée sera lancée pour nous.

(notez en passant que taper system-config- suivi de <TAB> <TAB> vous affichera la liste des programmes de configuration système, qui commencent tous par le même préfixe, question de simplicité).

Retour à la table des matières de la section

2.3.3 - Routage et passerelle

Vous aurez peut-être remarqué qu'on ne peut pas modifier la passerelle avec ifconfig. Il faut pour cela utiliser la commande route qui permet de jouer avec la table de routage.

route -n

affiche la table de routage actuelle (l'option -n demande de ne pas contacter le DNS pour trouver les noms des réseaux). Normalement, la dernière ligne devrait ressembler à:

Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
default         192.168.0.160   0.0.0.0         UG    0      0        0 eth0

Ceci signifie que pour toutes les adresses qui n'ont pas été routées ailleurs (0.0.0.0), on utilisera la passerelle 192.168.0.100 (ou autre chose chez vous!). Le champ "Indicateur" contient UG, ce qui signifie "la route est active" (U = up) et "est utilisée comme passerelle" (G = gateway).

Si cette ligne n'existe pas et qu'on est derrière un routeur, il faudra la rajouter en faisant:

route add default gateway 192.168.0.160 dev eth0

Si on veut la modifier, on n'a pas d'autre choix que de l'effacer et de la rajouter - route ne permet pas la modification directe d'une ligne:

route del default gateway 192.168.0.160 dev eth0
route add default gateway 192.168.0.1 dev eth0

Nous reviendrons sur le routage plus tard dans la session.

Retour à la table des matières de la section

2.3.4 - Le proxy

La définition du proxy est faite tout simplement dans des variables d'environnement, qu'il suffit de modifier et d'exporter:

export http_proxy=10.10.10.10:8080
export ftp_proxy=10.10.10.10:8080      

Ces variables ont bel et bien un nom en minuscules, malgré la convention. Notez qu'il existe également les variables gopher_proxy et wais_proxy qui ne sont plus très souvent utilisées de nos jours.

Évidemment, comme pour toute définition de variables, elles ne sont valables que dans la session en cours. Normalement vous devriez être en mesure de vous arranger pour rendre cela permanent...

Retour à la table des matières de la section

2.4 - Modifier son nom de machine (nom d'hôte)

Pour modifier le nom du serveur, on doit d'abord utiliser la commande hostname:

hostname nouveau_nom

Ensuite, il faut changer la valeur de HOSTNAME dans le fichier /etc/sysconfig/network afin que les processus réseau soient informés du changement.

Finalement, il ne faut pas oublier de changer /etc/hosts pour qu'on puisse utiliser le nom de la machine à la place de son adresse. (Il n'est pas nécessaire de modifier 127.0.0.1 qui devrait continuer à s'appeler localhost).

Pour que les changements soient pris en compte, il faut redémarrer les services qui dépendent du nom de l'hôte (le réseau et X-Windows):

service network restart
telinit 3
telinit 5

Retour à la table des matières de la section